{
 "metadata": {
  "name": "",
  "signature": "sha256:d5c30bcbc0be80388141ebcc707891a9d0dcf9c607354d681a3babe15eb424f2"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%matplotlib inline\n",
      "%load_ext autoreload\n",
      "%autoreload 2"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import os\n",
      "import numpy as np\n",
      "import peregrine\n",
      "import peregrine.acquisition as acq\n",
      "import peregrine.analysis.samples\n",
      "import peregrine.analysis.acquisition\n",
      "import peregrine.include.generateCAcode as CAcode\n",
      "import peregrine.samples\n",
      "import peregrine.tracking as track\n",
      "import peregrine.initSettings\n",
      "import peregrine.ephemeris as eph\n",
      "import peregrine.gps_constants as gps"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 20
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Load the sample file (available at http://downloads.swiftnav.com/baseband_samples/)\n",
      "s = peregrine.samples.load_samples(\"/tmp/20150616T013307Z.1bit\", file_format='1bit', \n",
      "                                   num_samples=-1, num_skip=0)\n",
      "# Specify the sampling and intermediate frequencies\n",
      "fs = 16.368e6; fi = fs / 4\n",
      "# Plot histogram and power spectral density (note: this only analyzes the first 2M samples)\n",
      "peregrine.analysis.samples.summary(s, sampling_freq = fs)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nwXRwIiKSBGZWx8yON7OTCx67crnwUWAa0NzMmplZJeAS4K1dyVtg06ZNjB49mv/85z9cf/31vP76\n6zz//PNcfPHFrFixgsWLF9O+ffvY+f379+e8885j3LhxNGnSBIDx48fToEEDOnfuzMaNGzn//PMZ\nP348AN9//31ZxNwj9O/fnyFDhrD//vtHHUUS9OvXjzZt2nDzzTdTq1YtBg8eHHUk2Qml7ZM8KO75\nVmCRuy9NQh4RkXLPzK4BbiFo4Z0OtAc+Bk7diWu9DGQC9cxsMdDf3Yeb2U3ABILGkmHuPqssslep\nUoWLLrqICy+8kAsvvDC2PyMjg7p169KkSRMOPfRQALp3787pp59Obm7uNte4//77Y8+rVq0KwD//\n+U9at25Nw4YNef/99+nYsWOp8rzyyitceOGFVKkS2VosSZOTkxN1BClG9+7duf766wG4+eabuemm\nm0p4hexu+fn5fP3110UeL+0UcJMJRj3XAOqg5VFFRJLpFoIB04vcvRPQCtipisjde7p7Q3ev7O5N\n3X14uH+8ux/m7oe4+0NlFx1uvPHG7fZdeeWVPPfccwAcf/zxPP7447z00ktUrFiROnXqsHTpUm6/\n/XbuuOMO8vPz6dWrV6wv5zXXXMO7777LkCFDADj55JO5//77WblyJQDTpk3DPejKndgto2fPnrz7\n7rtl+e2lBHdn/vz5AJx0khZATEV169bdZnvdunXqNpRi7rvvPo455pgij5e2u0V3glWWugHdgf+Z\nWddSvna7CesLu76ZzTSzr8xsRGmuKyKyB9vo7hsBzKyyu88GDos4U6mdemrxDd5VqlThlltu2Wbq\nt0aNGvHII4/w17/+lalTpzJo0CAWLVqEuzN06FDOP/98Bg4cGDv/3nvvZf/992fgwIEcf/zxPPLI\nI2zevJk2bdrEBgfm5+cDQSv2nmTTpk3UqFGDefPmkZuby9133x11JCnC/Pnz+f777znllFOoVasW\nv//976OOJHHq1atX7PHSdre4G2jr7qsAzKw+8H/A68W9KG7C+t8Ay4FpZjY6vOEXnNMc+APQwd3X\nJazuJCJSHi0NZxEaBbxrZmuARRFnKpXiProsrbZt226377TTTuOll17i5ZdfZtmyZYwaNYoPP/yQ\ne+65B4Bhw4bxhz8E7TDTp0+ncePG9OvXD2C77hzp7r777mPDhmBNl+rVq0ecRopTsAJip06dmDx5\n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\neeUVLrnkkrL75iRlfPXVV7Rt25bFixfH5vQuj/Ly8hg5ciSXX375Nvtr1aq1zWIf06dP58wzz2Tr\n1q388MMPZfLev/zyC3Xq1GHTpk2F3qdLNTzW3Se5++DwsdsLZBGR8sDd17r7Qne/NFyEqeCR8gXy\nnsTdGTRoEHfccQe1a9fmrLPOYsGCBaxZEwyXKVj2etOmTTz55JPbzL08duxYBg0axMMPP4y7c+ed\nd/LRRx8B8J///IfKlSvHlsvu27cvBxxwAN988w21atXikUceYeLEieTm5nLVVVdx/vnn061bt938\n3cvuctRRR3HqqafSoEED5syZE3WcpHJ3Ro8evc2+Z555hgkTJtC9e/ftCmQIVsP79ttvycvLw905\n5phjmDZtWpn+rDIyMortblGqluRUkIotFGpJ3jFqSd4xakneMXtCS3Lca/4J3OLuOeF2HeBRd/9t\nMjKWFTPz/v3771Hz2Ls77s7YsWPZZ599aNKkCYceeihmxi+//BI7r0ePHpx88snceOONsX3Lly+n\nYcOGAFx11VV88sknzJ49my5dupCXl8d3333HN998w5FHHsnw4cNp0aIFL730EkOHDmX8+PHlunWx\nvMjJyeGss86iSpUqvPrqq3vsf/Pvv/+e/fbbj2+++Ya5c+fSpUvhC4i2bduWiRMnYmasWbOGxo0b\nJzXXe++9x2mnnQZQ6H26pIF7IiKy+x1dUCADuPsaM0uL1SP2tEaDgj6R559/fmzfnDlzaNSo0TZz\nrn7yySex5aILjBw5Mvb8hRdeYP/996dDhw6MGjUqtj8zM5Ps7GyOOOIIqlWrxnXXXaf5c8uR2rVr\nM2bMGOrXr0/v3r0ZM2ZM1JHKVHZ2NhUrVqRjx44ATJs2jYULF25zTosWLfjf//5H5cqVt/l/qlq1\naknPV1KjnWYjFxFJPRXC1mMAzKwuatRIGU2bNiUjI4P169czatQo8vLy+OyzYMKnfv36AXDxxRdz\n22230aZNm1hRkJGRwerVq4GgP+r777/P448/zl/+8pfY9FRS/uyzzz68++67jB07Ni0HaP7www98\n8MEH23yKsnTpUg477DA6derEVVddFdvfq1cv+vcPJjg799xzAXjqqaeoVq3aNgXy7mJm20wXmUg3\nXRGR1PMo8ImZ/Tvc7gYMjDCPFKJatWqxqdnq1q0LwC233EL79u056qijaN68OQ899BAATz/9NPXr\n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\nOZOIiIiISLGSXSQ3ApbEbS+l+CK4NzA+qYlEREREREqQMgP3zOxyoDVwStRZRERERKR8S3aRvAxo\nGrfdONy3DTM7DbgLODnsllGorKys2PPMzEwyMzPLKqeISJnIzs4mOzs76hiRycrK0v1ZRNJCSfdr\nc/ekvbmZZQBzgN8AKwgmxr/U3WfFndMKeA3o7O7fFXMtT2bWnfHYY48xZ86cbYp3KVr37t0ZMGAA\np556atRR0oKZsXz58qhjpI2GDRuSavcICP47urtFnWN3SMX7tIhISYq6Tye1T7K75wH9gAnATGCk\nu88yswFmdm542l+BasBrZvaFmY1KZiYRERERkZIkvU+yu78DHJawr3/c89OTnUFEREREZEdoWWoR\nERERkQQqkkVEREREEqhIFhERERFJoCJZRERERCSBimQRERERkQQqkkVEREREEqhIFhERERFJoCJZ\nRERERCSBimQRERERkQQqkkVEREREEqhIFhERERFJoCJZRERERCSBimQRERERkQQqkkVEREREEqhI\nFhERERFJoCJZRERERCSBimQRERERkQQqkkVEREREEqhIFhERERFJoCJZRERERCSBimQRERERkQQq\nkkVEREREEqhIFhERERFJoCJZRERERCSBimQRERERkQQVow4gIiKpzcyaAE8C/9/e3UdbVdd5HH9/\n0CuCpDNKK2UMehB0qdjlQWCpPRhCPiS6UtOwNCudNTVpTc5MK2ucatZMOU01o64xlSgz5alMqbEr\npmaI4MMVgSsiKAiEoiTiAy5L+Mwf+3e4m8O95x7Ew9733u9rrbvOPvvxe87d53d+57t/+/f7E7Dc\n9ncLDimEEBqu4ZlkSSdKelzSE5L+uYPle0maJmm5pPslDW50TL3BvHnzig6hW7nnnnuKDqHbiHOr\nVxoOzLT9OaC56GB2Rhk/2xFTfSKm+kRM9XkzMTW0kiypD3AV8BHgCOATkg6rWu2zwAu2hwI/BK5o\nZEy9RVRkdk4ZP9BlFedW9yJpiqT1khZVzd8hgSHpSEmzJd2WexwIzAc+J+lO4LcFvIw3rYyf7Yip\nPhFTfSKm+pSukgyMIbs097TtvwDTgNOq1jkN+GmangWMb3BMIYTQm0wlS1Rs01kCw/YS26fanpR7\n3ABcAPyL7ROAj+7uFxBCCEVodJvkvwHW5J6vJas4d7iO7S2SXpS0v+0XGhzbLmtqaqKlpYVVq1YV\n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\nSWtwxc4AAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x7f6b1c28c810>"
       ]
      }
     ],
     "prompt_number": 69
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "prns_search = range(51)\n",
      "A = peregrine.acquisition.Acquisition(s, fs, fi, (gps.chips_per_code * fs / gps.chip_rate), \n",
      "                                      n_codes_integrate=4)\n",
      "acq = A.acquisition(prns=prns_search, show_progress=True, doppler_search=7000, threshold=24)\n",
      "acqed = [a for a in acq if a.status=='A']\n",
      "peregrine.analysis.acquisition.snr_bars(acq)\n",
      "peregrine.analysis.acquisition.acq_table(acq)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "javascript": [
        "//e6cd2c28-f47d-46a2-8eac-53a4f12ce1c7\n",
        "$(\"head\").append(\"<style> td.pb_widget {     width: auto; } td.pb_widget_fill {     width: 100%; } table.pb {     font-family: monospace;     border: 0;     margin: 0; } table.pb tr { border: 0; } table.pb td {     white-space: nowrap;     border: 0; } div.pb {     border: 1px solid #ddd;     border-radius: 3px; } div.pb_bar {     height: 1.5em; } </style>\")"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c3a0f10>"
       ]
      },
      {
       "javascript": [
        "\n",
        "                  // e6cd2c28-f47d-46a2-8eac-53a4f12ce1c7 -- used to remove this code blob in the end\n",
        "                  IPython.OutputArea.prototype.cleanProgressBar = function(uuids) {\n",
        "                      // filter by uuid-strings \n",
        "                      var myfilter = function(output) { \n",
        "                          var nuids = uuids.length;\n",
        "                          for (var i=0; i<nuids; i++) {\n",
        "                              if (output.hasOwnProperty('html')) {\n",
        "                                  if (output.html.indexOf(uuids[i]) != -1) {\n",
        "                                      return false;\n",
        "                                  }\n",
        "                              }\n",
        "                              if (output.hasOwnProperty('javascript')) {\n",
        "                                  if (output.javascript.indexOf(uuids[i]) != -1) {\n",
        "                                      return false;\n",
        "                                  }\n",
        "                              }\n",
        "                          }\n",
        "                          // keep all others\n",
        "                          return true;\n",
        "                      };\n",
        "\n",
        "                      // Filter the ouputs\n",
        "                      this.outputs = this.outputs.filter(myfilter);\n",
        "                };\n",
        "                "
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c3a0d50>"
       ]
      },
      {
       "html": [
        "<div class=\"pb\" id=\"e6cd2c28-f47d-46a2-8eac-53a4f12ce1c7\"><table class=\"pb ui-widget\"><tr>\n",
        "<td class=\"pb_widget\"><div id=\"b684baa8-4cb1-4bf2-8b05-c23d0200203b\">  0%</div></td>\n",
        "<td class=\"pb_widget\"> </td>\n",
        "<td class=\"pb_widget\"><div id=\"4015f2d2-3dbd-4ab5-afdc-279974c56415\">ETA:  --:--:--</div></td>\n",
        "</tr></table><div>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.HTML at 0x7f6b1c362d10>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text('  1%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5210>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:32');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5e10>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text('  3%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5290>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:15');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5ad0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text('  5%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5b50>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:10');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea58d0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text('  7%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5590>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:08');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fd90>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text('  9%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fa90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:11');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fad0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 11%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fb10>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:09');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5f8d0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 13%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5f390>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:08');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fa50>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 15%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5f150>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:07');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5f910>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 17%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3f3d0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:08');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3f610>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 19%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3fe90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:07');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3ff90>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 21%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3fd10>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:06');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3f890>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 23%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3fd90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:07');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3f250>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 25%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c168290>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:07');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c1685d0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 27%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b5d0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:06');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b9d0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 29%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bc90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:06');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bf10>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 31%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b0d0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:06');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bdd0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 33%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b550>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:06');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bad0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 35%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1ba90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:06');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b290>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 37%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1ba10>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:05');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bd50>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 39%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bf90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:05');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3c50>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 41%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3f10>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:05');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bf90>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 43%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bd50>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:05');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1ba10>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 45%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b290>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:04');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bad0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 47%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b550>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:04');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bdd0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 49%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b0d0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:04');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bf10>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 50%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1bc90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:04');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b9d0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 52%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1b5d0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:04');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf1ba90>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 54%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c168290>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:03');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c1685d0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 56%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3fd90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:03');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3f890>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 58%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3fd10>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:03');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3ff90>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 60%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3fe90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:03');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3f610>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 62%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3f3d0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:03');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf3f250>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 64%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5f150>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:03');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fa50>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 66%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5f390>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:02');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5f8d0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 68%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fb10>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:02');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fad0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 70%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fa90>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:02');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5fd90>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 72%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bf5f910>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:02');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea58d0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 74%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5b50>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:02');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5ad0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 76%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c362d10>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:02');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5290>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 78%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5e10>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:01');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5210>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 80%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bea5590>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:01');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c3a0f10>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 82%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c3a0d50>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:01');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3e90>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 84%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee38d0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:01');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3810>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 86%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3950>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:01');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3b90>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 88%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3110>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:01');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3c50>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 90%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3850>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:00');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee35d0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 92%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3710>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:00');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3e10>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 94%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3ed0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:00');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3f90>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 96%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee39d0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:00');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3d50>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text(' 98%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bee3f10>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:00');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c0e6fd0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text('100%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c0e6790>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('ETA:  0:00:00');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c0d5dd0>"
       ]
      },
      {
       "javascript": [
        "$('div#b684baa8-4cb1-4bf2-8b05-c23d0200203b').text('100%');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c0d53d0>"
       ]
      },
      {
       "javascript": [
        "$('div#4015f2d2-3dbd-4ab5-afdc-279974c56415').text('Time: 0:00:08');"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c0d5650>"
       ]
      },
      {
       "javascript": [
        "var element = document.getElementById('e6cd2c28-f47d-46a2-8eac-53a4f12ce1c7');\n",
        "                    var parent = element.parentNode\n",
        "                    parent.removeChild(element);\n",
        "                    parent.parentElement.remove();"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c34c110>"
       ]
      },
      {
       "javascript": [
        "this.cleanProgressBar(['e6cd2c28-f47d-46a2-8eac-53a4f12ce1c7', 'b684baa8-4cb1-4bf2-8b05-c23d0200203b', '4015f2d2-3dbd-4ab5-afdc-279974c56415'])"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1c0d5190>"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "PRN  2 SNR 287.38 @ CP  747.3,  -981.60 Hz A\n",
        "PRN  5 SNR 113.40 @ CP  200.6, +2931.31 Hz A\n",
        "PRN  6 SNR  28.98 @ CP  999.0, -2856.60 Hz A\n",
        "PRN 10 SNR  48.24 @ CP  325.9,  -490.81 Hz A\n",
        "PRN 12 SNR 335.11 @ CP  512.3,  -262.82 Hz A\n",
        "PRN 24 SNR  30.44 @ CP  759.0, -2886.57 Hz A\n",
        "PRN 25 SNR 186.86 @ CP  208.3, +2243.54 Hz A\n",
        "PRN 29 SNR 126.45 @ CP  648.1, +2509.90 Hz A\n",
        "PRN 46 SNR  72.44 @ CP  523.0,  +273.85 Hz A\n",
        "PRN 48 SNR  84.74 @ CP  960.8,  +382.31 Hz A\n",
        "PRN 51 SNR  73.98 @ CP  303.1,  +350.87 Hz A\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nnUOvzZ49e1ZR3uPHj6/cTjti616+Yx3bF7F1L9+xju2L2LqX79jBEzt79mxmzZo1uyi+rVfgbxdJ\nMRDzNjMzs6FHElHXAfxmZmZmVm5QFWMvvPACF110Uffjn//853zgAx9Y68uZM2cOJ554Yq/m2Wab\nbXjuuedaps+ePZvzzjtvjfJ56qmn2Hvvvdlhhx3YcccdueCCC7qfW7ZsGfvvvz8TJkzggAMO4IUX\nXshtY86cObzjHe9gwoQJXHbZZWuUj5mZmVU3qIqxZcuWceGFF64yLbt6RrkVK1b0GNOsSrtrEt8b\nI0aM4LzzzuPBBx/kV7/6Fd/61rd45JFHADj77LPZd999efTRR9l7770566yzWuZftmwZp59+Ovfc\ncw933XUXs2fPLizazMzMbO0aVMXYqaeeyuOPP87UqVM55ZTsov7Lly/n8MMPZ+LEiRx99NHdsdts\nsw0zZsxgp5124qqrruLxxx/noIMOYuedd2bPPffkt7/9LQA//OEP2XHHHZkyZQodHR3d8y9ZsoSD\nDjqICRMmdC8L4Morr2TSpElMmjSJGTNmdE9vPMbtzDPPZMKECbz3ve/l0UcfXeP1Hj16NJMnTwZg\n/fXXZ+LEiSxZkl0r95prruHYY48F4Nhjj+Xqq69umf/6669n//33Z6ONNmLjjTdm//3357rrrmuJ\n60vjx45FUo+38WPH1pqnmZnZmuqzK/D3hbPPPpsHH3yQ+++/H8h2U86fP5+HHnqI0aNHs/vuu/PL\nX/6S3XbbDYDNN9+ce++9F4B9992Xf/u3f2Pbbbfl7rvv5jOf+Qw333wzX/3qV7nhhhvYcsstefHF\nF7uX9etf/5r58+ezzjrrMGHCBE466SSGDRvGjBkzmDdvHhtvvDH77bcf1157LYccckj3fPfffz9z\n587lgQce4NVXX2Xq1KnstNNOLetyxRVX8PWvf71li9p2223H3LlzC1+DhQsXMn/+fHbddVcAnn32\nWUaNyn5rffTo0Tz77LMt8yxZsoStt175wwdjxozpLubqsmjxYqJkPbto+vQ+yMbMzKx9BlUxlmfa\ntGlsueWWAEyePJmFCxd2F2NHHHEEAC+//DK//OUvOfzww7u3YL322msA7L777hx77LFMnz6dD3/4\nw93t7rPPPqy//voA7LDDDixatIg//vGP7LXXXmy66aYAHHXUUdx2222rFGO33347H/rQhxg5ciQj\nR45c5blGRx55JEceeWSv1vWll17isMMO4/zzz+ctb3lLbkw7d5eamZlZ7w36YmzkyJHd94cPH87r\nr7/e/birYFmxYgWbbLJJ9xa1RhdddBH33HMPP/nJT3jPe97THdPY7rBhw7rbXVuX3OjaMtZs++23\nz90y9vrrr3PYYYdx9NFHc+ihh3ZPHzVqFEuXLmXUqFE888wzbLHFFi3zjhkzhs7Ozu7HTz31FHvt\ntddaWQ8zMzMrN6iOGdtggw1Yvnz5as23zTbbcNVVV3VPe+CBBwB4/PHH2XnnnZk9ezZbbLEFixcv\nLmxn2rRp3HbbbTz33HO88cYbXHnllascZwbw3ve+l6uvvppXXnmF5cuX8+Mf/zi3rSOPPJJ58+a1\n3Ip2UR5//PG8613v4uSTT15l+iGHHMJ3v/tdIDtjsrFQ63LAAQdw44038sILL7Bs2TJuvPFGDjjg\ngML1NDMzs7VnUBVjm266KbvvvjuTJk1a5aD6Lo276Jp3111++eVcfPHFTJ48mXe/+91ce+21AHzh\nC1/oPiC/q+2idkePHs3ZZ59NR0cHU6ZMYeedd+bggw9eJWbKlCkcccQRTJo0ife///1MmzZtjdf7\njjvu4PLLL+eWW25hypQpTJ06tfsA/FNOOYUbb7yRCRMmcPPNN3efVHDffffxqU99CoBNNtmE0047\njZ122olddtmFmTNnsvHGG69xXmZmZtYzX4Hf+iVJlQ/g93vBzMz6M1+B38zMzKwfczFmZmZmViMX\nY2ZmZmY1cjFmZmZmViMXY2ZmZmY1cjFmZmZmViMXY2ZmZmY1cjFmZmZmViMXY2ZmZmY1cjFmZmZm\nViMXY2ZmZmY1amsxJmmkpLskzZO0QNLMNH28pDsl/VbSlZJGpOnrSvq+pMck/UrS2HbmZ2ZmZla3\nthZjEfEKsFdETAEmAwdJ2gU4Bzg3It4BPA98Is3yCeC5iNge+AbwtXbmZ2ZmZla3tu+mjIg/p7sj\ngRFAAHsB/5WmzwE+mO4fmh4DXAXs0+78zMzMzOrU9mJM0jBJ84BngBuB3wPPR8SKFPIUMCbdHwMs\nBoiIN4DnJW3a7hzNzMzM6jKi3QtIRdcUSRsC/w28sxezq+iJWbNmdd/v6Oigo6NjNTM0MzMzW3s6\nOzvp7OysHK+IaF82zQuTTgP+AnwRGB0RKyTtCsyMiIMkXZfu3yVpOPB0RGyR0070Zd7W9yQRc+f2\nHDd9On4vmJlZfyaJiCjcwNTusyk3l7RRur8esB/wEHArcHgKOxa4Jt2/Nj0mPX9LO/MzMzMzq1u7\nd1NuCcyRNIys8PtBRPxU0sPA9yV9FZgHXJziLwa+J+kx4E/AR9ucn5mZmVmt2lqMRcQCYGrO9CeA\nXXKmvwJMb2dOZmZmZv2Jr8BvZmZmViMXY2ZmZmY1cjFmZmZmViMXY2ZmZmY1GvTF2PixY5FU6TZ+\nrH+X3MzMzPpW26/AX7dFixdXungoZBcQNTMzM+tLg37LmJmZmVl/5mLMzMzMrEYuxszMzMxq5GLM\nzMzMrEYuxszMzMxq5GLMzMzMrEYuxszMzMxq5GLMzMzMrEYuxszMzMxq5GLMzMzMrEYuxszMzMxq\n5GLMzMzMrEYuxszMzMxq5GLMzMzMrEYuxszMzMxq5GLMzMzMrEYuxszMzMxq1NZiTNJWkm6R9KCk\nBZJOTNNnSnpK0v3pdmDDPKdKekzSw5L2b2d+ZmZmZnUb0eb2Xwc+HxHzJa0P3CfpxvTceRFxXmOw\npInAdGAisBVwk6TtIyLanKeZmZlZLdq6ZSwinomI+en+S8DDwJj0tHJmORT4fkS8HhELgceAae3M\n0czMzKxOfXbMmKTxwGTgrjTpBEnzJX1H0kZp2hhgccNsS1hZvJmZmZkNOu3eTQlA2kV5FXByRLwk\n6ULg9IgISWcA5wKf7E2bs2bN6r7f0dFBR0fH2kvYzMzMbDV1dnbS2dlZOV7tPhxL0gjgJ8DPIuL8\nnOfHAT+OiEmSZgAREeek564DZkbEXU3zVD6MTBIxd2612OnT8eFp/UPVfnOfmZlZfyeJiMg7PAvo\nm92UlwAPNRZikkY3PP9h4Dfp/rXARyWtK2kbYDvg7j7I0czMzKwWbd1NKWl34ChggaR5QABfAo6U\nNBlYASwEPg0QEQ9Jmgs8BLwG/L3PpDQzM7PBrK3FWETcAQzPeeq6knnOAs5qW1JmZmZm/UiPuykl\nzZG0ccPjTSRd0t60zMzMzIaGKseMTYqI57seRMQyYEr7UjIzMzMbOqoUY8MkbdL1QNKm9NElMczM\nzMwGuypF1bnAryT9kOyq+YcBZ7Y1KzMzM7MhosdiLCIuk3QvsHea9OGIeKi9aZmZmZkNDYXFmKQN\nI+LFtFvyGeCKhuc2jYjn+iJBMzMzs8GsbMvYFcDBwH1k1wfrovT47W3My8zMzGxIKCzGIuJgSQL2\n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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x7f6b1c34ccd0>"
       ]
      }
     ],
     "prompt_number": 43
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "prns_to_track = [2]#, 5, 10, 25, 29]\n",
      "\n",
      "coherent_len = 1; s2bw = 20\n",
      "ms_to_track = None #100 * 1000\n",
      "chans = [a for a in acqed if a.prn+1 in prns_to_track]\n",
      "\n",
      "track_res={tr.prn: tr for tr in peregrine.tracking.track(s, chans,\n",
      "                                     ms_to_track=ms_to_track,\n",
      "                                     sampling_freq=fs,\n",
      "                                     stage1_loop_filter_params=(\n",
      "                                        (1, 0.7, 1),     # Code loop parameters\n",
      "                                        (15, 0.7, 1),    # Carrier loop parameters\n",
      "                                        1e3,             # Loop frequency\n",
      "                                        5,               # Carrier loop aiding_igain\n",
      "                                        1540),\n",
      "                                     stage2_coherent_ms=coherent_len,\n",
      "                                     stage2_loop_filter_params=(\n",
      "                                        (1, 0.7, 1),     # Code loop parameters\n",
      "                                        (s2bw, 0.7, 1),    # Carrier loop parameters\n",
      "                                        1e3/coherent_len,# Loop frequency\n",
      "                                        0,               # Carrier loop aiding_igain\n",
      "                                        1540),\n",
      "                                     multi=False)} #(prns_to_track > 1))}"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "javascript": [
        "//5966d3b2-1762-4a13-a36c-b85e80a7b0fc\n",
        "$(\"head\").append(\"<style> td.pb_widget {     width: auto; } td.pb_widget_fill {     width: 100%; } table.pb {     font-family: monospace;     border: 0;     margin: 0; } table.pb tr { border: 0; } table.pb td {     white-space: nowrap;     border: 0; } div.pb {     border: 1px solid #ddd;     border-radius: 3px; } div.pb_bar {     height: 1.5em; } </style>\")"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bfbe210>"
       ]
      },
      {
       "javascript": [
        "\n",
        "                  // 5966d3b2-1762-4a13-a36c-b85e80a7b0fc -- used to remove this code blob in the end\n",
        "                  IPython.OutputArea.prototype.cleanProgressBar = function(uuids) {\n",
        "                      // filter by uuid-strings \n",
        "                      var myfilter = function(output) { \n",
        "                          var nuids = uuids.length;\n",
        "                          for (var i=0; i<nuids; i++) {\n",
        "                              if (output.hasOwnProperty('html')) {\n",
        "                                  if (output.html.indexOf(uuids[i]) != -1) {\n",
        "                                      return false;\n",
        "                                  }\n",
        "                              }\n",
        "                              if (output.hasOwnProperty('javascript')) {\n",
        "                                  if (output.javascript.indexOf(uuids[i]) != -1) {\n",
        "                                      return false;\n",
        "                                  }\n",
        "                              }\n",
        "                          }\n",
        "                          // keep all others\n",
        "                          return true;\n",
        "                      };\n",
        "\n",
        "                      // Filter the ouputs\n",
        "                      this.outputs = this.outputs.filter(myfilter);\n",
        "                };\n",
        "                "
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.Javascript at 0x7f6b1bfbe950>"
       ]
      },
      {
       "html": [
        "<div class=\"pb\" id=\"5966d3b2-1762-4a13-a36c-b85e80a7b0fc\"><table class=\"pb ui-widget\"><tr>\n",
        "<td class=\"pb_widget\">  Tracking </td>\n",
        "<td class=\"pb_widget\"><div id=\"57a563d1-463f-4d3b-abcd-bca023e0fff9\">(CH: -/-)</div></td>\n",
        "<td class=\"pb_widget\"> </td>\n",
        "<td class=\"pb_widget\"><div id=\"ea3f22d8-740f-48ce-a701-2b61983a5666\">  0%</div></td>\n",
        "<td class=\"pb_widget\"> </td>\n",
        "<td class=\"pb_widget\"><div id=\"35c08915-f326-446c-a62c-723fdfe66de6\">ETA:  --:--:--</div></td>\n",
        "<td class=\"pb_widget\"> </td>\n",
        "<td class=\"pb_widget_fill\">\n",
        "        <div class=\"pb_bar\" id=\"7d674610-85be-45eb-aa20-a5a54474ccac\"></div>\n",
        "        <script type=\"text/javascript\">\n",
        "            $(\"div#7d674610-85be-45eb-aa20-a5a54474ccac\").progressbar({value: 0, max: 61072});\n",
        "        </script>\n",
        "        </td>\n",
        "</tr></table><div>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "<IPython.core.display.HTML at 0x7f6b1bfbe8d0>"
       ]
      },
      {
       "ename": "AttributeError",
       "evalue": "'dict' object has no attribute 'bw'",
       "output_type": "pyerr",
       "traceback": [
        "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
        "\u001b[0;32m<ipython-input-56-6313db0f4618>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     21\u001b[0m                                         \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m               \u001b[0;31m# Carrier loop aiding_igain\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     22\u001b[0m                                         1540),\n\u001b[0;32m---> 23\u001b[0;31m                                      multi=False)} #(prns_to_track > 1))}\n\u001b[0m",
        "\u001b[0;32m/home/henry/swift/peregrine/peregrine/tracking.py\u001b[0m in \u001b[0;36mtrack\u001b[0;34m(samples, channels, ms_to_track, sampling_freq, chipping_rate, IF, show_progress, loop_filter_class, stage1_loop_filter_params, correlator, stage2_coherent_ms, stage2_loop_filter_params, multi)\u001b[0m\n\u001b[1;32m    282\u001b[0m                             show_progress=show_progress, func_progress=show_progress)\n\u001b[1;32m    283\u001b[0m   \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 284\u001b[0;31m     \u001b[0mtrack_results\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchan\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdo_channel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchannels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    285\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    286\u001b[0m   \u001b[0;32mif\u001b[0m \u001b[0mpbar\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
        "\u001b[0;32m/home/henry/swift/peregrine/peregrine/tracking.py\u001b[0m in \u001b[0;36m<lambda>\u001b[0;34m((n, chan))\u001b[0m\n\u001b[1;32m    282\u001b[0m                             show_progress=show_progress, func_progress=show_progress)\n\u001b[1;32m    283\u001b[0m   \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 284\u001b[0;31m     \u001b[0mtrack_results\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchan\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdo_channel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchannels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    285\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    286\u001b[0m   \u001b[0;32mif\u001b[0m \u001b[0mpbar\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
        "\u001b[0;32m/home/henry/swift/peregrine/peregrine/tracking.py\u001b[0m in \u001b[0;36mdo_channel\u001b[0;34m(chan, n, q_progress)\u001b[0m\n\u001b[1;32m    157\u001b[0m                                           \u001b[0mcn0_0\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcn0_0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    158\u001b[0m                                           \u001b[0mcutoff_freq\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 159\u001b[0;31m                                           loop_freq=1e3)\n\u001b[0m\u001b[1;32m    160\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    161\u001b[0m     \u001b[0;31m# Estimate initial code freq via aiding from acq carrier freq\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
        "\u001b[0;32m/home/henry/swift/peregrine/libswiftnav/python/swiftnav/track.so\u001b[0m in \u001b[0;36mswiftnav.track.CN0Estimator.__cinit__ (swiftnav/track.c:4891)\u001b[0;34m()\u001b[0m\n",
        "\u001b[0;31mAttributeError\u001b[0m: 'dict' object has no attribute 'bw'"
       ]
      }
     ],
     "prompt_number": 56
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Debugging: need to fix this in swiftnav bindings, and then update in tracking.py if needed\n",
      "cn0_est = swiftnav.track.CN0Estimator(bw=1e3,\n",
      "                                          cn0_0=22,\n",
      "                                          cutoff_freq=10,\n",
      "                                          loop_freq=1e3)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "ename": "AttributeError",
       "evalue": "'dict' object has no attribute 'bw'",
       "output_type": "pyerr",
       "traceback": [
        "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
        "\u001b[0;32m<ipython-input-64-bd74cbb90f7e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      3\u001b[0m                                           \u001b[0mcn0_0\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m22\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m                                           \u001b[0mcutoff_freq\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m                                           loop_freq=1e3)\n\u001b[0m",
        "\u001b[0;32m/home/henry/swift/peregrine/libswiftnav/python/swiftnav/track.so\u001b[0m in \u001b[0;36mswiftnav.track.CN0Estimator.__cinit__ (swiftnav/track.c:4891)\u001b[0;34m()\u001b[0m\n",
        "\u001b[0;31mAttributeError\u001b[0m: 'dict' object has no attribute 'bw'"
       ]
      }
     ],
     "prompt_number": 64
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Debugging: need to fix this in swiftnav bindings, and then update in tracking.py if needed\n",
      "\n",
      "stage1_loop_filter_params=(\n",
      "                                        (1, 0.7, 1),     # Code loop parameters\n",
      "                                        (15, 0.7, 1),    # Carrier loop parameters\n",
      "                                        1e3,             # Loop frequency\n",
      "                                        5,               # Carrier loop aiding_igain\n",
      "                                        1540)\n",
      "loop_filter_class=swiftnav.track.AidedTrackingLoop\n",
      "code_freq_init = 1023\n",
      "carr_freq_init = 0\n",
      "loop_filter = loop_filter_class(\n",
      "    loop_freq = stage1_loop_filter_params[2], \\\n",
      "    code_freq = code_freq_init, \\\n",
      "    code_bw = stage1_loop_filter_params[0][0], \\\n",
      "    code_zeta = stage1_loop_filter_params[0][1], \\\n",
      "    code_k = stage1_loop_filter_params[0][2], \\\n",
      "    carr_to_code = stage1_loop_filter_params[4], \\\n",
      "    carr_freq = carr_freq_init, \\\n",
      "    carr_bw = stage1_loop_filter_params[1][0], \\\n",
      "    carr_zeta = stage1_loop_filter_params[1][1], \\\n",
      "    carr_k = stage1_loop_filter_params[1][2], \\\n",
      "    carr_freq_b1 = stage1_loop_filter_params[3], \\\n",
      "    )"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "ename": "ValueError",
       "evalue": "No value specified for struct attribute 'carr_filt'",
       "output_type": "pyerr",
       "traceback": [
        "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
        "\u001b[0;32m<ipython-input-66-8a087ed4ce34>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     21\u001b[0m     \u001b[0mcarr_zeta\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstage1_loop_filter_params\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     22\u001b[0m     \u001b[0mcarr_k\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstage1_loop_filter_params\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 23\u001b[0;31m     \u001b[0mcarr_freq_b1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstage1_loop_filter_params\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     24\u001b[0m     )\n",
        "\u001b[0;32m/home/henry/swift/peregrine/libswiftnav/python/swiftnav/track.so\u001b[0m in \u001b[0;36mswiftnav.track.AidedTrackingLoop.__cinit__ (swiftnav/track.c:3034)\u001b[0;34m()\u001b[0m\n",
        "\u001b[0;32m/home/henry/swift/peregrine/libswiftnav/python/swiftnav/track.so\u001b[0m in \u001b[0;36mFromPyStructUtility.__pyx_convert__from_py_aided_tl_state_t (swiftnav/track.c:8975)\u001b[0;34m()\u001b[0m\n",
        "\u001b[0;31mValueError\u001b[0m: No value specified for struct attribute 'carr_filt'"
       ]
      }
     ],
     "prompt_number": 66
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}